package com_6;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Test7 {//定义一个测试类
    public static void main(String[] args) {//main方法入口
        ArrayList<String> list = new ArrayList<>();//创建集合对象//
        list.add("诸葛亮,10");//添加元素到集合中
        list.add("周瑜,25");//添加元素到集合
        list.add("刘备,35");//添加元素到集合
        list.add("范冰冰,36");//添加元素到集合
        list.add("赵圆圆,38");//添加元素到集合
        list.add("古力娜扎,45");//添加元素到集合
        Stream<String> stream = list.stream().skip(1).limit(5);
        //通过流对象筛选数据后得到一个流
        List<String> list1 = stream.collect(Collectors.toList());
        //使用流调用collect接口中Collectors类的toList方法获取一个集合，所以流可以将筛选的数据保存起来
        for (String s : list1) {
            //然后遍历这个集合
            System.out.println(s);
            //输出元素
        }
        System.out.println("----------------------------");
        //分隔符
        Stream<String> stream1 = list.stream().skip(2).limit(4);
        //再次使用流筛选数据并定义一个流对象暂时保存起来
        Set<String> list2 = stream1.collect(Collectors.toSet());
        //调用collect接口中的colectors类中toset方法将得到的流保存在set集合中
        for (String s : list2) {//
            System.out.println(s);//使用增强for循环遍历这个set集合，set集合中的元素，无序不重复
        }
        System.out.println("-------------------------------");
        //分隔符
        Stream<String> stream2 = list.stream().skip(1).limit(3);
        //使用流对象第三次筛选数据并保存在流对象中
        Map<String, Integer> list3 = stream2.collect(Collectors.toMap(s -> s.split(",")[0],
                //使用流对象调用collect接口中个collectors类中tomap方法得到一个map集合，并将流中的数据保存起来
                //因为map中是以键值对保存的元素，所以需要对流中的元素进行切割后才能保存起来并且值是经过字符串转化为int类型后才能保存
                s -> Integer.parseInt(s.split(",")[1])));//
        Set<String> keySet = list3.keySet();//得到键集合
        for (String s : keySet) {//遍历键集合
            Integer values = list3.get(s);//使用get方法和键位得到map集合中的值
            System.out.println(s+"  "+values);//输出得到的值和键位
        }
    }
}
